<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.12"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Os1: ORB_SLAM2::PnPsolver Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Os1
   &#160;<span id="projectnumber">1</span>
   </div>
   <div id="projectbrief">OrbSlam2 documentado y modificado</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.12 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,'Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('class_o_r_b___s_l_a_m2_1_1_pn_psolver.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="class_o_r_b___s_l_a_m2_1_1_pn_psolver-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">ORB_SLAM2::PnPsolver Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Solucionador Point n-Points EPnP.  
 <a href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="_pn_psolver_8h_source.html">PnPsolver.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a784429037a79cb53923f4db181a4d115"><td class="memItemLeft" align="right" valign="top">cv::Mat&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a784429037a79cb53923f4db181a4d115">find</a> (vector&lt; bool &gt; &amp;vbInliers, int &amp;nInliers)</td></tr>
<tr class="memdesc:a784429037a79cb53923f4db181a4d115"><td class="mdescLeft">&#160;</td><td class="mdescRight">Ejecuta el número máximo de iteraciones Ransac.  <a href="#a784429037a79cb53923f4db181a4d115">More...</a><br /></td></tr>
<tr class="separator:a784429037a79cb53923f4db181a4d115"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abbef2ac776747661112246e85667f452"><td class="memItemLeft" align="right" valign="top">cv::Mat&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#abbef2ac776747661112246e85667f452">iterate</a> (int nIterations, bool &amp;bNoMore, vector&lt; bool &gt; &amp;vbInliers, int &amp;nInliers)</td></tr>
<tr class="memdesc:abbef2ac776747661112246e85667f452"><td class="mdescLeft">&#160;</td><td class="mdescRight">Ejecuta n iteraciones de Ransac.  <a href="#abbef2ac776747661112246e85667f452">More...</a><br /></td></tr>
<tr class="separator:abbef2ac776747661112246e85667f452"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b4cad992a43620e027bfb4bc9ef24f8"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a7b4cad992a43620e027bfb4bc9ef24f8">PnPsolver</a> (const <a class="el" href="class_o_r_b___s_l_a_m2_1_1_frame.html">Frame</a> &amp;F, const vector&lt; <a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_point.html">MapPoint</a> *&gt; &amp;vpMapPointMatches)</td></tr>
<tr class="separator:a7b4cad992a43620e027bfb4bc9ef24f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adff29377dcc77891a33113080b6b1eb7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#adff29377dcc77891a33113080b6b1eb7">SetRansacParameters</a> (double probability=0.99, int minInliers=8, int maxIterations=300, int minSet=4, float epsilon=0.4, float th2=5.991)</td></tr>
<tr class="memdesc:adff29377dcc77891a33113080b6b1eb7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Ajusta los parámetros de Ransac.  <a href="#adff29377dcc77891a33113080b6b1eb7">More...</a><br /></td></tr>
<tr class="separator:adff29377dcc77891a33113080b6b1eb7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad40b921779ed92bfb6b017a76e4d88aa"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#ad40b921779ed92bfb6b017a76e4d88aa">~PnPsolver</a> ()</td></tr>
<tr class="memdesc:ad40b921779ed92bfb6b017a76e4d88aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor por defecto.  <a href="#ad40b921779ed92bfb6b017a76e4d88aa">More...</a><br /></td></tr>
<tr class="separator:ad40b921779ed92bfb6b017a76e4d88aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:acfff5312c244e3e6de7bc16b3a72f34b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#acfff5312c244e3e6de7bc16b3a72f34b">add_correspondence</a> (const double X, const double Y, const double Z, const double u, const double v)</td></tr>
<tr class="memdesc:acfff5312c244e3e6de7bc16b3a72f34b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Función del código original EPnP.  <a href="#acfff5312c244e3e6de7bc16b3a72f34b">More...</a><br /></td></tr>
<tr class="separator:acfff5312c244e3e6de7bc16b3a72f34b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb27b1402d63ce78890d3f1ea42a75a4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#abb27b1402d63ce78890d3f1ea42a75a4">CheckInliers</a> ()</td></tr>
<tr class="memdesc:abb27b1402d63ce78890d3f1ea42a75a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reproyecta según la pose calculada y vuelve a marcar como inliers solamente a los que tienen un error menor que maxError.  <a href="#abb27b1402d63ce78890d3f1ea42a75a4">More...</a><br /></td></tr>
<tr class="separator:abb27b1402d63ce78890d3f1ea42a75a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a42c51e43d16d52747facbaca93fcd583"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a42c51e43d16d52747facbaca93fcd583">choose_control_points</a> (void)</td></tr>
<tr class="memdesc:a42c51e43d16d52747facbaca93fcd583"><td class="mdescLeft">&#160;</td><td class="mdescRight">Función del código original EPnP.  <a href="#a42c51e43d16d52747facbaca93fcd583">More...</a><br /></td></tr>
<tr class="separator:a42c51e43d16d52747facbaca93fcd583"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aae07f773bf3dc205377bd31afa24702a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#aae07f773bf3dc205377bd31afa24702a">compute_A_and_b_gauss_newton</a> (const double *l_6x10, const double *rho, double cb[4], CvMat *A, CvMat *b)</td></tr>
<tr class="memdesc:aae07f773bf3dc205377bd31afa24702a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Función del código original EPnP.  <a href="#aae07f773bf3dc205377bd31afa24702a">More...</a><br /></td></tr>
<tr class="separator:aae07f773bf3dc205377bd31afa24702a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e35c1813d1a76d6b2a1664ac7080dcd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a1e35c1813d1a76d6b2a1664ac7080dcd">compute_barycentric_coordinates</a> (void)</td></tr>
<tr class="memdesc:a1e35c1813d1a76d6b2a1664ac7080dcd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Función del código original EPnP.  <a href="#a1e35c1813d1a76d6b2a1664ac7080dcd">More...</a><br /></td></tr>
<tr class="separator:a1e35c1813d1a76d6b2a1664ac7080dcd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4c58e214a0016e1e58cbc1afd9eb5eb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#ac4c58e214a0016e1e58cbc1afd9eb5eb">compute_ccs</a> (const double *betas, const double *ut)</td></tr>
<tr class="memdesc:ac4c58e214a0016e1e58cbc1afd9eb5eb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Función del código original EPnP.  <a href="#ac4c58e214a0016e1e58cbc1afd9eb5eb">More...</a><br /></td></tr>
<tr class="separator:ac4c58e214a0016e1e58cbc1afd9eb5eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add2118dab6bee4303e80c0ca109f3b2c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#add2118dab6bee4303e80c0ca109f3b2c">compute_L_6x10</a> (const double *ut, double *l_6x10)</td></tr>
<tr class="memdesc:add2118dab6bee4303e80c0ca109f3b2c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Función del código original EPnP.  <a href="#add2118dab6bee4303e80c0ca109f3b2c">More...</a><br /></td></tr>
<tr class="separator:add2118dab6bee4303e80c0ca109f3b2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abeb37c568bb09293bb679d84bb4d2796"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#abeb37c568bb09293bb679d84bb4d2796">compute_pcs</a> (void)</td></tr>
<tr class="memdesc:abeb37c568bb09293bb679d84bb4d2796"><td class="mdescLeft">&#160;</td><td class="mdescRight">Función del código original EPnP.  <a href="#abeb37c568bb09293bb679d84bb4d2796">More...</a><br /></td></tr>
<tr class="separator:abeb37c568bb09293bb679d84bb4d2796"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa712661f5888f9e1f580fe7f0117e389"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#aa712661f5888f9e1f580fe7f0117e389">compute_pose</a> (double R[3][3], double T[3])</td></tr>
<tr class="memdesc:aa712661f5888f9e1f580fe7f0117e389"><td class="mdescLeft">&#160;</td><td class="mdescRight">Función del código original EPnP.  <a href="#aa712661f5888f9e1f580fe7f0117e389">More...</a><br /></td></tr>
<tr class="separator:aa712661f5888f9e1f580fe7f0117e389"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab893a05c84790a0344d20df7eab604e0"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#ab893a05c84790a0344d20df7eab604e0">compute_R_and_t</a> (const double *ut, const double *betas, double R[3][3], double t[3])</td></tr>
<tr class="memdesc:ab893a05c84790a0344d20df7eab604e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Función del código original EPnP.  <a href="#ab893a05c84790a0344d20df7eab604e0">More...</a><br /></td></tr>
<tr class="separator:ab893a05c84790a0344d20df7eab604e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af2f8ccb85a3c8341efae307892caad37"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#af2f8ccb85a3c8341efae307892caad37">compute_rho</a> (double *rho)</td></tr>
<tr class="memdesc:af2f8ccb85a3c8341efae307892caad37"><td class="mdescLeft">&#160;</td><td class="mdescRight">Función del código original EPnP.  <a href="#af2f8ccb85a3c8341efae307892caad37">More...</a><br /></td></tr>
<tr class="separator:af2f8ccb85a3c8341efae307892caad37"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa71c8d15e2c605918bae4bc53dc99904"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#aa71c8d15e2c605918bae4bc53dc99904">copy_R_and_t</a> (const double R_dst[3][3], const double t_dst[3], double R_src[3][3], double t_src[3])</td></tr>
<tr class="memdesc:aa71c8d15e2c605918bae4bc53dc99904"><td class="mdescLeft">&#160;</td><td class="mdescRight">Función del código original EPnP.  <a href="#aa71c8d15e2c605918bae4bc53dc99904">More...</a><br /></td></tr>
<tr class="separator:aa71c8d15e2c605918bae4bc53dc99904"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af117c07b4d7b9b5990f98f33d19482d3"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#af117c07b4d7b9b5990f98f33d19482d3">dist2</a> (const double *p1, const double *p2)</td></tr>
<tr class="memdesc:af117c07b4d7b9b5990f98f33d19482d3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Función del código original EPnP.  <a href="#af117c07b4d7b9b5990f98f33d19482d3">More...</a><br /></td></tr>
<tr class="separator:af117c07b4d7b9b5990f98f33d19482d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd58911fc21c6255ac5c541b8e4540ac"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#afd58911fc21c6255ac5c541b8e4540ac">dot</a> (const double *v1, const double *v2)</td></tr>
<tr class="memdesc:afd58911fc21c6255ac5c541b8e4540ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">Función del código original EPnP.  <a href="#afd58911fc21c6255ac5c541b8e4540ac">More...</a><br /></td></tr>
<tr class="separator:afd58911fc21c6255ac5c541b8e4540ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf90f06f1d7218d8200b2682817ed08a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#abf90f06f1d7218d8200b2682817ed08a">estimate_R_and_t</a> (double R[3][3], double t[3])</td></tr>
<tr class="memdesc:abf90f06f1d7218d8200b2682817ed08a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Función del código original EPnP.  <a href="#abf90f06f1d7218d8200b2682817ed08a">More...</a><br /></td></tr>
<tr class="separator:abf90f06f1d7218d8200b2682817ed08a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8cc37bbb1cc4e575d83fb7503136a542"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a8cc37bbb1cc4e575d83fb7503136a542">fill_M</a> (CvMat *M, const int row, const double *<a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a868ef3e00710a5541d50a15af7be2a20">alphas</a>, const double u, const double v)</td></tr>
<tr class="memdesc:a8cc37bbb1cc4e575d83fb7503136a542"><td class="mdescLeft">&#160;</td><td class="mdescRight">Función del código original EPnP.  <a href="#a8cc37bbb1cc4e575d83fb7503136a542">More...</a><br /></td></tr>
<tr class="separator:a8cc37bbb1cc4e575d83fb7503136a542"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d36f0e15dfca9c0ecfff91149882232"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a6d36f0e15dfca9c0ecfff91149882232">find_betas_approx_1</a> (const CvMat *L_6x10, const CvMat *Rho, double *betas)</td></tr>
<tr class="memdesc:a6d36f0e15dfca9c0ecfff91149882232"><td class="mdescLeft">&#160;</td><td class="mdescRight">Función del código original EPnP.  <a href="#a6d36f0e15dfca9c0ecfff91149882232">More...</a><br /></td></tr>
<tr class="separator:a6d36f0e15dfca9c0ecfff91149882232"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95d7f0790ebd99fdc012971dd9a78e65"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a95d7f0790ebd99fdc012971dd9a78e65">find_betas_approx_2</a> (const CvMat *L_6x10, const CvMat *Rho, double *betas)</td></tr>
<tr class="memdesc:a95d7f0790ebd99fdc012971dd9a78e65"><td class="mdescLeft">&#160;</td><td class="mdescRight">Función del código original EPnP.  <a href="#a95d7f0790ebd99fdc012971dd9a78e65">More...</a><br /></td></tr>
<tr class="separator:a95d7f0790ebd99fdc012971dd9a78e65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af80a1580251b4368156fb0e0d36a7ac2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#af80a1580251b4368156fb0e0d36a7ac2">find_betas_approx_3</a> (const CvMat *L_6x10, const CvMat *Rho, double *betas)</td></tr>
<tr class="memdesc:af80a1580251b4368156fb0e0d36a7ac2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Función del código original EPnP.  <a href="#af80a1580251b4368156fb0e0d36a7ac2">More...</a><br /></td></tr>
<tr class="separator:af80a1580251b4368156fb0e0d36a7ac2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b2b11d8afbf638d8cd48d739b071073"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a4b2b11d8afbf638d8cd48d739b071073">gauss_newton</a> (const CvMat *L_6x10, const CvMat *Rho, double current_betas[4])</td></tr>
<tr class="memdesc:a4b2b11d8afbf638d8cd48d739b071073"><td class="mdescLeft">&#160;</td><td class="mdescRight">Función del código original EPnP.  <a href="#a4b2b11d8afbf638d8cd48d739b071073">More...</a><br /></td></tr>
<tr class="separator:a4b2b11d8afbf638d8cd48d739b071073"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54b16a3fb045afe5425c004ec7b5fa21"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a54b16a3fb045afe5425c004ec7b5fa21">mat_to_quat</a> (const double R[3][3], double q[4])</td></tr>
<tr class="memdesc:a54b16a3fb045afe5425c004ec7b5fa21"><td class="mdescLeft">&#160;</td><td class="mdescRight">Función del código original EPnP.  <a href="#a54b16a3fb045afe5425c004ec7b5fa21">More...</a><br /></td></tr>
<tr class="separator:a54b16a3fb045afe5425c004ec7b5fa21"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2be5e2c8a40397fb9a7c7457be95c407"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a2be5e2c8a40397fb9a7c7457be95c407">print_pose</a> (const double R[3][3], const double t[3])</td></tr>
<tr class="memdesc:a2be5e2c8a40397fb9a7c7457be95c407"><td class="mdescLeft">&#160;</td><td class="mdescRight">Función del código original EPnP.  <a href="#a2be5e2c8a40397fb9a7c7457be95c407">More...</a><br /></td></tr>
<tr class="separator:a2be5e2c8a40397fb9a7c7457be95c407"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9290df9524ca70b3127ea3408fb7b0d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#ac9290df9524ca70b3127ea3408fb7b0d">qr_solve</a> (CvMat *A, CvMat *b, CvMat *X)</td></tr>
<tr class="memdesc:ac9290df9524ca70b3127ea3408fb7b0d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Función del código original EPnP.  <a href="#ac9290df9524ca70b3127ea3408fb7b0d">More...</a><br /></td></tr>
<tr class="separator:ac9290df9524ca70b3127ea3408fb7b0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19710728d61dcf1caa32f31d140f3327"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a19710728d61dcf1caa32f31d140f3327">Refine</a> ()</td></tr>
<tr class="separator:a19710728d61dcf1caa32f31d140f3327"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab3247415c8c4ff0a5df74096907eac10"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#ab3247415c8c4ff0a5df74096907eac10">relative_error</a> (double &amp;rot_err, double &amp;transl_err, const double Rtrue[3][3], const double ttrue[3], const double Rest[3][3], const double test[3])</td></tr>
<tr class="memdesc:ab3247415c8c4ff0a5df74096907eac10"><td class="mdescLeft">&#160;</td><td class="mdescRight">Función del código original EPnP.  <a href="#ab3247415c8c4ff0a5df74096907eac10">More...</a><br /></td></tr>
<tr class="separator:ab3247415c8c4ff0a5df74096907eac10"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d0ecb37dd35686ae16ff2cdb277cd82"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a8d0ecb37dd35686ae16ff2cdb277cd82">reprojection_error</a> (const double R[3][3], const double t[3])</td></tr>
<tr class="memdesc:a8d0ecb37dd35686ae16ff2cdb277cd82"><td class="mdescLeft">&#160;</td><td class="mdescRight">Función del código original EPnP.  <a href="#a8d0ecb37dd35686ae16ff2cdb277cd82">More...</a><br /></td></tr>
<tr class="separator:a8d0ecb37dd35686ae16ff2cdb277cd82"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78dcd4d88b5ebae795d8c214932c4089"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a78dcd4d88b5ebae795d8c214932c4089">reset_correspondences</a> (void)</td></tr>
<tr class="memdesc:a78dcd4d88b5ebae795d8c214932c4089"><td class="mdescLeft">&#160;</td><td class="mdescRight">Función del código original EPnP.  <a href="#a78dcd4d88b5ebae795d8c214932c4089">More...</a><br /></td></tr>
<tr class="separator:a78dcd4d88b5ebae795d8c214932c4089"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2747be485a2a87ad5a72f8431edbf77"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#aa2747be485a2a87ad5a72f8431edbf77">set_maximum_number_of_correspondences</a> (const int n)</td></tr>
<tr class="memdesc:aa2747be485a2a87ad5a72f8431edbf77"><td class="mdescLeft">&#160;</td><td class="mdescRight">Función del código original EPnP.  <a href="#aa2747be485a2a87ad5a72f8431edbf77">More...</a><br /></td></tr>
<tr class="separator:aa2747be485a2a87ad5a72f8431edbf77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af33413cd4dc6f3e963cf49997baa40c2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#af33413cd4dc6f3e963cf49997baa40c2">solve_for_sign</a> (void)</td></tr>
<tr class="memdesc:af33413cd4dc6f3e963cf49997baa40c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Función del código original EPnP.  <a href="#af33413cd4dc6f3e963cf49997baa40c2">More...</a><br /></td></tr>
<tr class="separator:af33413cd4dc6f3e963cf49997baa40c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:a868ef3e00710a5541d50a15af7be2a20"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a868ef3e00710a5541d50a15af7be2a20">alphas</a></td></tr>
<tr class="separator:a868ef3e00710a5541d50a15af7be2a20"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada47673e9ff64787eda1412e35056627"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#ada47673e9ff64787eda1412e35056627">ccs</a> [4][3]</td></tr>
<tr class="separator:ada47673e9ff64787eda1412e35056627"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acce97bf95ac136a37e0ddbfced436d44"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#acce97bf95ac136a37e0ddbfced436d44">cws</a> [4][3]</td></tr>
<tr class="separator:acce97bf95ac136a37e0ddbfced436d44"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7aa2e7f95408450609eba8509f0d5571"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a7aa2e7f95408450609eba8509f0d5571">cws_determinant</a></td></tr>
<tr class="separator:a7aa2e7f95408450609eba8509f0d5571"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af65e2f3506f97dd52f00be073209acd1"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#af65e2f3506f97dd52f00be073209acd1">fu</a></td></tr>
<tr class="separator:af65e2f3506f97dd52f00be073209acd1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97e47e678a18e47e29a3d9b6842222eb"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a97e47e678a18e47e29a3d9b6842222eb">fv</a></td></tr>
<tr class="separator:a97e47e678a18e47e29a3d9b6842222eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7c44ad1754b7d0817470a96156d5772a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a7c44ad1754b7d0817470a96156d5772a">maximum_number_of_correspondences</a></td></tr>
<tr class="separator:a7c44ad1754b7d0817470a96156d5772a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8090b33033ca9d0026113f2c1454fc8"><td class="memItemLeft" align="right" valign="top">cv::Mat&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#ab8090b33033ca9d0026113f2c1454fc8">mBestTcw</a></td></tr>
<tr class="memdesc:ab8090b33033ca9d0026113f2c1454fc8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mejor pose.  <a href="#ab8090b33033ca9d0026113f2c1454fc8">More...</a><br /></td></tr>
<tr class="separator:ab8090b33033ca9d0026113f2c1454fc8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa93341b33e4cb4a03b354e95aaa19e4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#aaa93341b33e4cb4a03b354e95aaa19e4">mnBestInliers</a></td></tr>
<tr class="memdesc:aaa93341b33e4cb4a03b354e95aaa19e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cantidad de "mejores inliers".  <a href="#aaa93341b33e4cb4a03b354e95aaa19e4">More...</a><br /></td></tr>
<tr class="separator:aaa93341b33e4cb4a03b354e95aaa19e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94dae01b8088d82477c6f18b32d8b7b0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a94dae01b8088d82477c6f18b32d8b7b0">mnInliersi</a></td></tr>
<tr class="memdesc:a94dae01b8088d82477c6f18b32d8b7b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cantidad de inliers.  <a href="#a94dae01b8088d82477c6f18b32d8b7b0">More...</a><br /></td></tr>
<tr class="separator:a94dae01b8088d82477c6f18b32d8b7b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acd174db02cc77182c187ceef74931f02"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#acd174db02cc77182c187ceef74931f02">mnIterations</a></td></tr>
<tr class="memdesc:acd174db02cc77182c187ceef74931f02"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cantidad de iteraciones Ransac realizadas.  <a href="#acd174db02cc77182c187ceef74931f02">More...</a><br /></td></tr>
<tr class="separator:acd174db02cc77182c187ceef74931f02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4055d308ba46690499985cc082389ea1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a4055d308ba46690499985cc082389ea1">mnRefinedInliers</a></td></tr>
<tr class="memdesc:a4055d308ba46690499985cc082389ea1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cantidad de inliers refinados.  <a href="#a4055d308ba46690499985cc082389ea1">More...</a><br /></td></tr>
<tr class="separator:a4055d308ba46690499985cc082389ea1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa364e0f3b317e9d0a27c956096c52a03"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#aa364e0f3b317e9d0a27c956096c52a03">mRansacEpsilon</a></td></tr>
<tr class="separator:aa364e0f3b317e9d0a27c956096c52a03"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6c7c904ed5e57d7672a0884dae5f3252"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a6c7c904ed5e57d7672a0884dae5f3252">mRansacMaxIts</a></td></tr>
<tr class="memdesc:a6c7c904ed5e57d7672a0884dae5f3252"><td class="mdescLeft">&#160;</td><td class="mdescRight">Máxima cantidad de iteraciones permitidas para encontrar la solución.  <a href="#a6c7c904ed5e57d7672a0884dae5f3252">More...</a><br /></td></tr>
<tr class="separator:a6c7c904ed5e57d7672a0884dae5f3252"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5694fcb7d9f017ebc25cf096c2459923"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a5694fcb7d9f017ebc25cf096c2459923">mRansacMinInliers</a></td></tr>
<tr class="memdesc:a5694fcb7d9f017ebc25cf096c2459923"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mínima cantidad de inliers aceptados.  <a href="#a5694fcb7d9f017ebc25cf096c2459923">More...</a><br /></td></tr>
<tr class="separator:a5694fcb7d9f017ebc25cf096c2459923"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a02709ce4b9dbd8b7537a13365af2a3db"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a02709ce4b9dbd8b7537a13365af2a3db">mRansacMinSet</a></td></tr>
<tr class="memdesc:a02709ce4b9dbd8b7537a13365af2a3db"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cantidad mínima de puntos a considerar en cada iteración.  <a href="#a02709ce4b9dbd8b7537a13365af2a3db">More...</a><br /></td></tr>
<tr class="separator:a02709ce4b9dbd8b7537a13365af2a3db"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9716f832c8f6190e66e0f36d9cac09b8"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a9716f832c8f6190e66e0f36d9cac09b8">mRansacProb</a></td></tr>
<tr class="memdesc:a9716f832c8f6190e66e0f36d9cac09b8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mínima probablidad de acierto aceptada.  <a href="#a9716f832c8f6190e66e0f36d9cac09b8">More...</a><br /></td></tr>
<tr class="separator:a9716f832c8f6190e66e0f36d9cac09b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae9af481b97b3bfd60f60371af7a534ff"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#ae9af481b97b3bfd60f60371af7a534ff">mRansacTh</a></td></tr>
<tr class="separator:ae9af481b97b3bfd60f60371af7a534ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6c081e732bbda232ccfff28ca9fc75e"><td class="memItemLeft" align="right" valign="top">cv::Mat&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#af6c081e732bbda232ccfff28ca9fc75e">mRefinedTcw</a></td></tr>
<tr class="memdesc:af6c081e732bbda232ccfff28ca9fc75e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pose refinada.  <a href="#af6c081e732bbda232ccfff28ca9fc75e">More...</a><br /></td></tr>
<tr class="separator:af6c081e732bbda232ccfff28ca9fc75e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab66b8221ddd57480e0cff4fdf305f052"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#ab66b8221ddd57480e0cff4fdf305f052">mRi</a> [3][3]</td></tr>
<tr class="separator:ab66b8221ddd57480e0cff4fdf305f052"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a833616003399bd9392a403b789cfac41"><td class="memItemLeft" align="right" valign="top">cv::Mat&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a833616003399bd9392a403b789cfac41">mTcwi</a></td></tr>
<tr class="separator:a833616003399bd9392a403b789cfac41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad55a5403377e0072fb551472b4698889"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#ad55a5403377e0072fb551472b4698889">mti</a> [3]</td></tr>
<tr class="separator:ad55a5403377e0072fb551472b4698889"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3470afc96c454059aa0d826b1982570f"><td class="memItemLeft" align="right" valign="top">vector&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a3470afc96c454059aa0d826b1982570f">mvAllIndices</a></td></tr>
<tr class="memdesc:a3470afc96c454059aa0d826b1982570f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Índice de las correspondencias en los vectores apareados de puntos 3D y demás.  <a href="#a3470afc96c454059aa0d826b1982570f">More...</a><br /></td></tr>
<tr class="separator:a3470afc96c454059aa0d826b1982570f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9419f0917d2e1db0c1a76fe97cb4c326"><td class="memItemLeft" align="right" valign="top">vector&lt; bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a9419f0917d2e1db0c1a76fe97cb4c326">mvbBestInliers</a></td></tr>
<tr class="memdesc:a9419f0917d2e1db0c1a76fe97cb4c326"><td class="mdescLeft">&#160;</td><td class="mdescRight">Marca los mejores inliers.  <a href="#a9419f0917d2e1db0c1a76fe97cb4c326">More...</a><br /></td></tr>
<tr class="separator:a9419f0917d2e1db0c1a76fe97cb4c326"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99bf8d10dff819b6f243b0b297627729"><td class="memItemLeft" align="right" valign="top">vector&lt; bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a99bf8d10dff819b6f243b0b297627729">mvbInliersi</a></td></tr>
<tr class="memdesc:a99bf8d10dff819b6f243b0b297627729"><td class="mdescLeft">&#160;</td><td class="mdescRight">Marca de inlier.  <a href="#a99bf8d10dff819b6f243b0b297627729">More...</a><br /></td></tr>
<tr class="separator:a99bf8d10dff819b6f243b0b297627729"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6688392be55984a41e6f540fea5f6a49"><td class="memItemLeft" align="right" valign="top">vector&lt; bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a6688392be55984a41e6f540fea5f6a49">mvbRefinedInliers</a></td></tr>
<tr class="memdesc:a6688392be55984a41e6f540fea5f6a49"><td class="mdescLeft">&#160;</td><td class="mdescRight">Marca los inliers refinados.  <a href="#a6688392be55984a41e6f540fea5f6a49">More...</a><br /></td></tr>
<tr class="separator:a6688392be55984a41e6f540fea5f6a49"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8d7d867978e933e5456c24a6f7433b0"><td class="memItemLeft" align="right" valign="top">vector&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#aa8d7d867978e933e5456c24a6f7433b0">mvKeyPointIndices</a></td></tr>
<tr class="memdesc:aa8d7d867978e933e5456c24a6f7433b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Índices de los puntos singulares.  <a href="#aa8d7d867978e933e5456c24a6f7433b0">More...</a><br /></td></tr>
<tr class="separator:aa8d7d867978e933e5456c24a6f7433b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e20aadb635e38bbc034c8a3ad1917b5"><td class="memItemLeft" align="right" valign="top">vector&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a4e20aadb635e38bbc034c8a3ad1917b5">mvMaxError</a></td></tr>
<tr class="memdesc:a4e20aadb635e38bbc034c8a3ad1917b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Máximo error de reproyección según el nivel de escala de la pirámide.  <a href="#a4e20aadb635e38bbc034c8a3ad1917b5">More...</a><br /></td></tr>
<tr class="separator:a4e20aadb635e38bbc034c8a3ad1917b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3b3ccfff0f500c9e73efcb57d84474a"><td class="memItemLeft" align="right" valign="top">vector&lt; cv::Point2f &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#af3b3ccfff0f500c9e73efcb57d84474a">mvP2D</a></td></tr>
<tr class="memdesc:af3b3ccfff0f500c9e73efcb57d84474a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Coordenadas 2D de los puntos singulares.  <a href="#af3b3ccfff0f500c9e73efcb57d84474a">More...</a><br /></td></tr>
<tr class="separator:af3b3ccfff0f500c9e73efcb57d84474a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8498b32728a10f7e7ec834576ded87cf"><td class="memItemLeft" align="right" valign="top">vector&lt; cv::Point3f &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a8498b32728a10f7e7ec834576ded87cf">mvP3Dw</a></td></tr>
<tr class="memdesc:a8498b32728a10f7e7ec834576ded87cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Coordenadas 3D de los puntos 3D.  <a href="#a8498b32728a10f7e7ec834576ded87cf">More...</a><br /></td></tr>
<tr class="separator:a8498b32728a10f7e7ec834576ded87cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a53aa206e4d1f799db01b5b2ef622fe"><td class="memItemLeft" align="right" valign="top">vector&lt; <a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_point.html">MapPoint</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a4a53aa206e4d1f799db01b5b2ef622fe">mvpMapPointMatches</a></td></tr>
<tr class="memdesc:a4a53aa206e4d1f799db01b5b2ef622fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Puntos 3D macheados.  <a href="#a4a53aa206e4d1f799db01b5b2ef622fe">More...</a><br /></td></tr>
<tr class="separator:a4a53aa206e4d1f799db01b5b2ef622fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7db84340cb13eff1148839ce5e77105b"><td class="memItemLeft" align="right" valign="top">vector&lt; float &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a7db84340cb13eff1148839ce5e77105b">mvSigma2</a></td></tr>
<tr class="memdesc:a7db84340cb13eff1148839ce5e77105b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Factor de escala al cuadrado, correspondiente al punto 2D.  <a href="#a7db84340cb13eff1148839ce5e77105b">More...</a><br /></td></tr>
<tr class="separator:a7db84340cb13eff1148839ce5e77105b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a130dcfc77d6c98b3f172d1f26d6df37b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a130dcfc77d6c98b3f172d1f26d6df37b">N</a></td></tr>
<tr class="memdesc:a130dcfc77d6c98b3f172d1f26d6df37b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cantidad de correspondencias.  <a href="#a130dcfc77d6c98b3f172d1f26d6df37b">More...</a><br /></td></tr>
<tr class="separator:a130dcfc77d6c98b3f172d1f26d6df37b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e762455c896cbc55bd81c77af87941f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a2e762455c896cbc55bd81c77af87941f">number_of_correspondences</a></td></tr>
<tr class="separator:a2e762455c896cbc55bd81c77af87941f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac832e2ede20f3a111a29b4d1c24b0587"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#ac832e2ede20f3a111a29b4d1c24b0587">pcs</a></td></tr>
<tr class="separator:ac832e2ede20f3a111a29b4d1c24b0587"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a053e3eea03b62181aa944c9fc20d5bfa"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a053e3eea03b62181aa944c9fc20d5bfa">pws</a></td></tr>
<tr class="separator:a053e3eea03b62181aa944c9fc20d5bfa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed7cb3c5dcf35bb2e6074679ba2a76e3"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#aed7cb3c5dcf35bb2e6074679ba2a76e3">uc</a></td></tr>
<tr class="memdesc:aed7cb3c5dcf35bb2e6074679ba2a76e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parámetros de cámara.  <a href="#aed7cb3c5dcf35bb2e6074679ba2a76e3">More...</a><br /></td></tr>
<tr class="separator:aed7cb3c5dcf35bb2e6074679ba2a76e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc95fe222dcfad864207925e2783e9ce"><td class="memItemLeft" align="right" valign="top">double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#afc95fe222dcfad864207925e2783e9ce">us</a></td></tr>
<tr class="separator:afc95fe222dcfad864207925e2783e9ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c88482e4f7fb0ca8519a4897c936f4f"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a8c88482e4f7fb0ca8519a4897c936f4f">vc</a></td></tr>
<tr class="separator:a8c88482e4f7fb0ca8519a4897c936f4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Solucionador Point n-Points EPnP. </p>
<p>Utiliza RANSAC para buscar la pose de un keyframe que mejor explican una serie de puntos observados, de posición conocida en el mapa.</p>
<p>Esta clase se instancia repetidas veces solamente en Tracking::Relocalisation(), este este contexto: Se evalúan varios keyframes candidatos, que obsevan presumiblemente los mismos puntos observados por el frame actual. Para cada uno se correlacionan los puntos observados con BoW, del keyframe candidato se obtienen sus correspondientes coordenadas 3D, y se ejecuta el solucionador para conseguir la pose que mejor explica la observación, </p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a7b4cad992a43620e027bfb4bc9ef24f8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ORB_SLAM2::PnPsolver::PnPsolver </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_o_r_b___s_l_a_m2_1_1_frame.html">Frame</a> &amp;&#160;</td>
          <td class="paramname"><em>F</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const vector&lt; <a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_point.html">MapPoint</a> *&gt; &amp;&#160;</td>
          <td class="paramname"><em>vpMapPointMatches</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ad40b921779ed92bfb6b017a76e4d88aa"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ORB_SLAM2::PnPsolver::~PnPsolver </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Destructor por defecto. </p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="acfff5312c244e3e6de7bc16b3a72f34b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::PnPsolver::add_correspondence </td>
          <td>(</td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>X</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>Y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>Z</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>u</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>v</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Función del código original EPnP. </p>

</div>
</div>
<a id="abb27b1402d63ce78890d3f1ea42a75a4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::PnPsolver::CheckInliers </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Reproyecta según la pose calculada y vuelve a marcar como inliers solamente a los que tienen un error menor que maxError. </p>

</div>
</div>
<a id="a42c51e43d16d52747facbaca93fcd583"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::PnPsolver::choose_control_points </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Función del código original EPnP. </p>

</div>
</div>
<a id="aae07f773bf3dc205377bd31afa24702a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::PnPsolver::compute_A_and_b_gauss_newton </td>
          <td>(</td>
          <td class="paramtype">const double *&#160;</td>
          <td class="paramname"><em>l_6x10</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double *&#160;</td>
          <td class="paramname"><em>rho</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>cb</em>[4], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">CvMat *&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">CvMat *&#160;</td>
          <td class="paramname"><em>b</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Función del código original EPnP. </p>

</div>
</div>
<a id="a1e35c1813d1a76d6b2a1664ac7080dcd"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::PnPsolver::compute_barycentric_coordinates </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Función del código original EPnP. </p>

</div>
</div>
<a id="ac4c58e214a0016e1e58cbc1afd9eb5eb"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::PnPsolver::compute_ccs </td>
          <td>(</td>
          <td class="paramtype">const double *&#160;</td>
          <td class="paramname"><em>betas</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double *&#160;</td>
          <td class="paramname"><em>ut</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Función del código original EPnP. </p>

</div>
</div>
<a id="add2118dab6bee4303e80c0ca109f3b2c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::PnPsolver::compute_L_6x10 </td>
          <td>(</td>
          <td class="paramtype">const double *&#160;</td>
          <td class="paramname"><em>ut</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>l_6x10</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Función del código original EPnP. </p>

</div>
</div>
<a id="abeb37c568bb09293bb679d84bb4d2796"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::PnPsolver::compute_pcs </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Función del código original EPnP. </p>

</div>
</div>
<a id="aa712661f5888f9e1f580fe7f0117e389"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ORB_SLAM2::PnPsolver::compute_pose </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>R</em>[3][3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>T</em>[3]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Función del código original EPnP. </p>

</div>
</div>
<a id="ab893a05c84790a0344d20df7eab604e0"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ORB_SLAM2::PnPsolver::compute_R_and_t </td>
          <td>(</td>
          <td class="paramtype">const double *&#160;</td>
          <td class="paramname"><em>ut</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double *&#160;</td>
          <td class="paramname"><em>betas</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>R</em>[3][3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>t</em>[3]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Función del código original EPnP. </p>

</div>
</div>
<a id="af2f8ccb85a3c8341efae307892caad37"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::PnPsolver::compute_rho </td>
          <td>(</td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>rho</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Función del código original EPnP. </p>

</div>
</div>
<a id="aa71c8d15e2c605918bae4bc53dc99904"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::PnPsolver::copy_R_and_t </td>
          <td>(</td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>R_dst</em>[3][3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>t_dst</em>[3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>R_src</em>[3][3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>t_src</em>[3]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Función del código original EPnP. </p>

</div>
</div>
<a id="af117c07b4d7b9b5990f98f33d19482d3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ORB_SLAM2::PnPsolver::dist2 </td>
          <td>(</td>
          <td class="paramtype">const double *&#160;</td>
          <td class="paramname"><em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double *&#160;</td>
          <td class="paramname"><em>p2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Función del código original EPnP. </p>

</div>
</div>
<a id="afd58911fc21c6255ac5c541b8e4540ac"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ORB_SLAM2::PnPsolver::dot </td>
          <td>(</td>
          <td class="paramtype">const double *&#160;</td>
          <td class="paramname"><em>v1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double *&#160;</td>
          <td class="paramname"><em>v2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Función del código original EPnP. </p>

</div>
</div>
<a id="abf90f06f1d7218d8200b2682817ed08a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::PnPsolver::estimate_R_and_t </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>R</em>[3][3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>t</em>[3]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Función del código original EPnP. </p>

</div>
</div>
<a id="a8cc37bbb1cc4e575d83fb7503136a542"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::PnPsolver::fill_M </td>
          <td>(</td>
          <td class="paramtype">CvMat *&#160;</td>
          <td class="paramname"><em>M</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>row</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double *&#160;</td>
          <td class="paramname"><em>alphas</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>u</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>v</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Función del código original EPnP. </p>

</div>
</div>
<a id="a784429037a79cb53923f4db181a4d115"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">cv::Mat ORB_SLAM2::PnPsolver::find </td>
          <td>(</td>
          <td class="paramtype">vector&lt; bool &gt; &amp;&#160;</td>
          <td class="paramname"><em>vbInliers</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int &amp;&#160;</td>
          <td class="paramname"><em>nInliers</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Ejecuta el número máximo de iteraciones Ransac. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">vbInliers</td><td>Resultado, marca la posición de los elementos inliers encontrados. </td></tr>
    <tr><td class="paramname">nInliers</td><td>Restulado, cantidad de inliers encontrados. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Pose de la relocalización, o una matriz vacía si no falla.</dd></dl>
<p>No utilizado en orb-slam2. En su lugar se usa <a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#abbef2ac776747661112246e85667f452" title="Ejecuta n iteraciones de Ransac. ">PnPsolver::iterate</a>. </p>

</div>
</div>
<a id="a6d36f0e15dfca9c0ecfff91149882232"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::PnPsolver::find_betas_approx_1 </td>
          <td>(</td>
          <td class="paramtype">const CvMat *&#160;</td>
          <td class="paramname"><em>L_6x10</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const CvMat *&#160;</td>
          <td class="paramname"><em>Rho</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>betas</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Función del código original EPnP. </p>

</div>
</div>
<a id="a95d7f0790ebd99fdc012971dd9a78e65"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::PnPsolver::find_betas_approx_2 </td>
          <td>(</td>
          <td class="paramtype">const CvMat *&#160;</td>
          <td class="paramname"><em>L_6x10</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const CvMat *&#160;</td>
          <td class="paramname"><em>Rho</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>betas</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Función del código original EPnP. </p>

</div>
</div>
<a id="af80a1580251b4368156fb0e0d36a7ac2"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::PnPsolver::find_betas_approx_3 </td>
          <td>(</td>
          <td class="paramtype">const CvMat *&#160;</td>
          <td class="paramname"><em>L_6x10</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const CvMat *&#160;</td>
          <td class="paramname"><em>Rho</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>betas</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Función del código original EPnP. </p>

</div>
</div>
<a id="a4b2b11d8afbf638d8cd48d739b071073"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::PnPsolver::gauss_newton </td>
          <td>(</td>
          <td class="paramtype">const CvMat *&#160;</td>
          <td class="paramname"><em>L_6x10</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const CvMat *&#160;</td>
          <td class="paramname"><em>Rho</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>current_betas</em>[4]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Función del código original EPnP. </p>

</div>
</div>
<a id="abbef2ac776747661112246e85667f452"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">cv::Mat ORB_SLAM2::PnPsolver::iterate </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>nIterations</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool &amp;&#160;</td>
          <td class="paramname"><em>bNoMore</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">vector&lt; bool &gt; &amp;&#160;</td>
          <td class="paramname"><em>vbInliers</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int &amp;&#160;</td>
          <td class="paramname"><em>nInliers</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Ejecuta n iteraciones de Ransac. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">nIterations</td><td>Cantidad de iteraciones a ejecutar. Termina antes si se alcanza <a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a6c7c904ed5e57d7672a0884dae5f3252" title="Máxima cantidad de iteraciones permitidas para encontrar la solución. ">PnPsolver::mRansacMaxIts</a> en total. </td></tr>
    <tr><td class="paramname">bNoMore</td><td>Resultado, señal que indica que se alcanzaron las <a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a6c7c904ed5e57d7672a0884dae5f3252" title="Máxima cantidad de iteraciones permitidas para encontrar la solución. ">PnPsolver::mRansacMaxIts</a> iteraciones en total. </td></tr>
    <tr><td class="paramname">vbInliers</td><td>Resultado, marca la posición de los elementos inliers encontrados. </td></tr>
    <tr><td class="paramname">nInliers</td><td>Restulado, cantidad de inliers encontrados. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Pose de la relocalización, o una matriz vacía si no falla.</dd></dl>
<p>Usado sólo en <a class="el" href="class_o_r_b___s_l_a_m2_1_1_tracking.html#acd4ea9e7097bed16428a4b78fe4b6a67" title="Dispara una relocalización. ">Tracking::Relocalization</a>. También se invoca desde el método no utilizado find. </p>

</div>
</div>
<a id="a54b16a3fb045afe5425c004ec7b5fa21"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::PnPsolver::mat_to_quat </td>
          <td>(</td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>R</em>[3][3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>q</em>[4]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Función del código original EPnP. </p>

</div>
</div>
<a id="a2be5e2c8a40397fb9a7c7457be95c407"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::PnPsolver::print_pose </td>
          <td>(</td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>R</em>[3][3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>t</em>[3]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Función del código original EPnP. </p>

</div>
</div>
<a id="ac9290df9524ca70b3127ea3408fb7b0d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::PnPsolver::qr_solve </td>
          <td>(</td>
          <td class="paramtype">CvMat *&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">CvMat *&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">CvMat *&#160;</td>
          <td class="paramname"><em>X</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Función del código original EPnP. </p>

</div>
</div>
<a id="a19710728d61dcf1caa32f31d140f3327"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool ORB_SLAM2::PnPsolver::Refine </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="ab3247415c8c4ff0a5df74096907eac10"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::PnPsolver::relative_error </td>
          <td>(</td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>rot_err</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double &amp;&#160;</td>
          <td class="paramname"><em>transl_err</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>Rtrue</em>[3][3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>ttrue</em>[3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>Rest</em>[3][3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>test</em>[3]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Función del código original EPnP. </p>

</div>
</div>
<a id="a8d0ecb37dd35686ae16ff2cdb277cd82"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ORB_SLAM2::PnPsolver::reprojection_error </td>
          <td>(</td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>R</em>[3][3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>t</em>[3]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Función del código original EPnP. </p>

</div>
</div>
<a id="a78dcd4d88b5ebae795d8c214932c4089"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::PnPsolver::reset_correspondences </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Función del código original EPnP. </p>

</div>
</div>
<a id="aa2747be485a2a87ad5a72f8431edbf77"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::PnPsolver::set_maximum_number_of_correspondences </td>
          <td>(</td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>n</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Función del código original EPnP. </p>

</div>
</div>
<a id="adff29377dcc77891a33113080b6b1eb7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::PnPsolver::SetRansacParameters </td>
          <td>(</td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>probability</em> = <code>0.99</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>minInliers</em> = <code>8</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>maxIterations</em> = <code>300</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>minSet</em> = <code>4</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>epsilon</em> = <code>0.4</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>th2</em> = <code>5.991</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Ajusta los parámetros de Ransac. </p>
<p>Todos los parámetros tienen un valor por defecto, aunque orb-slam2 no los usa.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">probability</td><td>Mínima probablidad de acierto aceptada. Este valor se registra en <a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a9716f832c8f6190e66e0f36d9cac09b8" title="Mínima probablidad de acierto aceptada. ">PnPsolver::mRansacProb</a> </td></tr>
    <tr><td class="paramname">minInliers</td><td>Mínima cantidad de inliers aceptados. Este valor se registra en <a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a5694fcb7d9f017ebc25cf096c2459923" title="Mínima cantidad de inliers aceptados. ">PnPsolver::mRansacMinInliers</a> </td></tr>
    <tr><td class="paramname">maxIterations</td><td>Máxima cantidad de iteraciones permitidas para encontrar la solución. Si la alcanza, desiste. Este valor se registra en <a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a6c7c904ed5e57d7672a0884dae5f3252" title="Máxima cantidad de iteraciones permitidas para encontrar la solución. ">PnPsolver::mRansacMaxIts</a> </td></tr>
    <tr><td class="paramname">minSet</td><td>Cantidad mínima de puntos a considerar en cada iteración. Este valor se registra en <a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#a02709ce4b9dbd8b7537a13365af2a3db" title="Cantidad mínima de puntos a considerar en cada iteración. ">PnPsolver::mRansacMinSet</a> </td></tr>
    <tr><td class="paramname">epsilon</td><td>Este valor se registra en <a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html#aa364e0f3b317e9d0a27c956096c52a03">PnPsolver::mRansacEpsilon</a> </td></tr>
    <tr><td class="paramname">th2</td><td>Umbral al caudrado.</td></tr>
  </table>
  </dd>
</dl>
<p>Invocado con parámetros por defecto por el constructor de <a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html" title="Solucionador Point n-Points EPnP. ">PnPsolver</a>, y por <a class="el" href="class_o_r_b___s_l_a_m2_1_1_tracking.html#acd4ea9e7097bed16428a4b78fe4b6a67" title="Dispara una relocalización. ">Tracking::Relocalization</a> con parámetros ad hoc.</p>
<p>En orb-slam2 toda vez que se construye una instancia, se invoca dos veces consecutivas este método: primero en el constuctor con valores por defecto, e inmediatamente después con parámetros ad hoc. </p>

</div>
</div>
<a id="af33413cd4dc6f3e963cf49997baa40c2"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ORB_SLAM2::PnPsolver::solve_for_sign </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Función del código original EPnP. </p>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a868ef3e00710a5541d50a15af7be2a20"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double * ORB_SLAM2::PnPsolver::alphas</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="ada47673e9ff64787eda1412e35056627"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ORB_SLAM2::PnPsolver::ccs[4][3]</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="acce97bf95ac136a37e0ddbfced436d44"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ORB_SLAM2::PnPsolver::cws[4][3]</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a7aa2e7f95408450609eba8509f0d5571"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ORB_SLAM2::PnPsolver::cws_determinant</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="af65e2f3506f97dd52f00be073209acd1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ORB_SLAM2::PnPsolver::fu</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a97e47e678a18e47e29a3d9b6842222eb"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ORB_SLAM2::PnPsolver::fv</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a7c44ad1754b7d0817470a96156d5772a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int ORB_SLAM2::PnPsolver::maximum_number_of_correspondences</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="ab8090b33033ca9d0026113f2c1454fc8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">cv::Mat ORB_SLAM2::PnPsolver::mBestTcw</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Mejor pose. </p>

</div>
</div>
<a id="aaa93341b33e4cb4a03b354e95aaa19e4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int ORB_SLAM2::PnPsolver::mnBestInliers</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Cantidad de "mejores inliers". </p>

</div>
</div>
<a id="a94dae01b8088d82477c6f18b32d8b7b0"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int ORB_SLAM2::PnPsolver::mnInliersi</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Cantidad de inliers. </p>

</div>
</div>
<a id="acd174db02cc77182c187ceef74931f02"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int ORB_SLAM2::PnPsolver::mnIterations</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Cantidad de iteraciones Ransac realizadas. </p>

</div>
</div>
<a id="a4055d308ba46690499985cc082389ea1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int ORB_SLAM2::PnPsolver::mnRefinedInliers</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Cantidad de inliers refinados. </p>

</div>
</div>
<a id="aa364e0f3b317e9d0a27c956096c52a03"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">float ORB_SLAM2::PnPsolver::mRansacEpsilon</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a6c7c904ed5e57d7672a0884dae5f3252"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int ORB_SLAM2::PnPsolver::mRansacMaxIts</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Máxima cantidad de iteraciones permitidas para encontrar la solución. </p>
<p>Si la alcanza, desiste. </p>

</div>
</div>
<a id="a5694fcb7d9f017ebc25cf096c2459923"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int ORB_SLAM2::PnPsolver::mRansacMinInliers</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Mínima cantidad de inliers aceptados. </p>

</div>
</div>
<a id="a02709ce4b9dbd8b7537a13365af2a3db"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int ORB_SLAM2::PnPsolver::mRansacMinSet</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Cantidad mínima de puntos a considerar en cada iteración. </p>

</div>
</div>
<a id="a9716f832c8f6190e66e0f36d9cac09b8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ORB_SLAM2::PnPsolver::mRansacProb</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Mínima probablidad de acierto aceptada. </p>

</div>
</div>
<a id="ae9af481b97b3bfd60f60371af7a534ff"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">float ORB_SLAM2::PnPsolver::mRansacTh</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="af6c081e732bbda232ccfff28ca9fc75e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">cv::Mat ORB_SLAM2::PnPsolver::mRefinedTcw</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Pose refinada. </p>

</div>
</div>
<a id="ab66b8221ddd57480e0cff4fdf305f052"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ORB_SLAM2::PnPsolver::mRi[3][3]</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a833616003399bd9392a403b789cfac41"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">cv::Mat ORB_SLAM2::PnPsolver::mTcwi</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="ad55a5403377e0072fb551472b4698889"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ORB_SLAM2::PnPsolver::mti[3]</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a3470afc96c454059aa0d826b1982570f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">vector&lt;size_t&gt; ORB_SLAM2::PnPsolver::mvAllIndices</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Índice de las correspondencias en los vectores apareados de puntos 3D y demás. </p>

</div>
</div>
<a id="a9419f0917d2e1db0c1a76fe97cb4c326"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">vector&lt;bool&gt; ORB_SLAM2::PnPsolver::mvbBestInliers</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Marca los mejores inliers. </p>

</div>
</div>
<a id="a99bf8d10dff819b6f243b0b297627729"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">vector&lt;bool&gt; ORB_SLAM2::PnPsolver::mvbInliersi</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Marca de inlier. </p>

</div>
</div>
<a id="a6688392be55984a41e6f540fea5f6a49"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">vector&lt;bool&gt; ORB_SLAM2::PnPsolver::mvbRefinedInliers</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Marca los inliers refinados. </p>

</div>
</div>
<a id="aa8d7d867978e933e5456c24a6f7433b0"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">vector&lt;size_t&gt; ORB_SLAM2::PnPsolver::mvKeyPointIndices</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Índices de los puntos singulares. </p>

</div>
</div>
<a id="a4e20aadb635e38bbc034c8a3ad1917b5"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">vector&lt;float&gt; ORB_SLAM2::PnPsolver::mvMaxError</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Máximo error de reproyección según el nivel de escala de la pirámide. </p>

</div>
</div>
<a id="af3b3ccfff0f500c9e73efcb57d84474a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">vector&lt;cv::Point2f&gt; ORB_SLAM2::PnPsolver::mvP2D</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Coordenadas 2D de los puntos singulares. </p>

</div>
</div>
<a id="a8498b32728a10f7e7ec834576ded87cf"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">vector&lt;cv::Point3f&gt; ORB_SLAM2::PnPsolver::mvP3Dw</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Coordenadas 3D de los puntos 3D. </p>

</div>
</div>
<a id="a4a53aa206e4d1f799db01b5b2ef622fe"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">vector&lt;<a class="el" href="class_o_r_b___s_l_a_m2_1_1_map_point.html">MapPoint</a>*&gt; ORB_SLAM2::PnPsolver::mvpMapPointMatches</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Puntos 3D macheados. </p>

</div>
</div>
<a id="a7db84340cb13eff1148839ce5e77105b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">vector&lt;float&gt; ORB_SLAM2::PnPsolver::mvSigma2</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Factor de escala al cuadrado, correspondiente al punto 2D. </p>

</div>
</div>
<a id="a130dcfc77d6c98b3f172d1f26d6df37b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int ORB_SLAM2::PnPsolver::N</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Cantidad de correspondencias. </p>

</div>
</div>
<a id="a2e762455c896cbc55bd81c77af87941f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int ORB_SLAM2::PnPsolver::number_of_correspondences</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="ac832e2ede20f3a111a29b4d1c24b0587"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double * ORB_SLAM2::PnPsolver::pcs</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a053e3eea03b62181aa944c9fc20d5bfa"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double* ORB_SLAM2::PnPsolver::pws</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="aed7cb3c5dcf35bb2e6074679ba2a76e3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ORB_SLAM2::PnPsolver::uc</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Parámetros de cámara. </p>

</div>
</div>
<a id="afc95fe222dcfad864207925e2783e9ce"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double * ORB_SLAM2::PnPsolver::us</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a8c88482e4f7fb0ca8519a4897c936f4f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double ORB_SLAM2::PnPsolver::vc</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>/home/alejandro/Desarrollo eclipse/os1/include/<a class="el" href="_pn_psolver_8h_source.html">PnPsolver.h</a></li>
<li>/home/alejandro/Desarrollo eclipse/os1/src/<a class="el" href="_pn_psolver_8cc.html">PnPsolver.cc</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="namespace_o_r_b___s_l_a_m2.html">ORB_SLAM2</a></li><li class="navelem"><a class="el" href="class_o_r_b___s_l_a_m2_1_1_pn_psolver.html">PnPsolver</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.12 </li>
  </ul>
</div>
</body>
</html>
